During the last couple of years, I’ve been reading quite a few books about various programming topics and related technologies. Some of them take a very practical approach with a lot of examples and some take a more philosophical approach and some books are somewhere in between.

Examples of the practical books are Microsoft ADO.NET Core Reference by David Sceppa and Visual Basic .NET Unleashed by Paul Kimmel. They are filled with code samples and how-to guides and are good books for reference.

The Pragmatic Programmer by Andrew Hunt and David Thomas take a philosophical approach with few code samples. A book like this is easier to read and makes you think.

The books in between could be C# 2005 Business Objects by Rockford Lhotka. It’s not exactly philosophical but it touches some of the same topics. It is also filled with code samples that are understandable through discussions in the book, thus making it a little philosophical.

The problem with the practical books is that they are too broad in their covering of the subject. When they state that the book is for intermediate users, you can rest assure that most of the content is not. The same goes for the advanced books. This is regardless if the book is highly focused on a niche in programming or takes a more broad perspective. They are good for reference but so is the Internet.

The philosophical books tend to be more challenging and that’s usually a good thing. However, the lack of practical use makes them vulnerable to personal interpretation and thereby looses some of their usefulness. This could also be a benefit of course, depending on the nature of the book.

Both the practical and the philosophical books always make me skip pages, because there are a lot of wasted ink and paper in them. This could come in form of over-explaining things or just stating the obvious again and again.

I find that almost every programming book falls into one of these three categories. My personal favourite category is the one that mixes code samples with a philosophical approach, because it forces you to participate in the discussions and make your own judgments on specific coding and architectural problems while you read it. It can also be used as a reference and thereby combining the best of the two worlds.

So, what does make a good programming book? To be honest, I don’t have a clue. Maybe it depends on what your expectations for a certain book are before you read it. I have been disappointed many times because of high expectation.

Just this moment, I am writing this sentence in a rich text editor here on my blog. It let’s me format text, insert images, tables and a lot of other great stuff as well. I can do bold or italic fonts, which helps clearing up the text and underline my point and what not.

I do have a lot of years of experience in using these kinds of online text editors like RichTextBox and FCKeditor. In fact, I build my own 3 years ago. I spend a lot of hours perfecting it, but even then, it only worked in IE and it was error prone. Writing massive amounts of JavaScript and make it work is incredibly difficult. I take my hat off for people who do that for a living. I couldn’t. Nor would I ever do it again. I lost too many nights of sleep on that account.

What are really cool about these kinds of editors, all kinds, are also the things that make them bad. And I mean really bad; to the point where they suck and I want to stop writing because of the bad editor. That’s not true, because I know how to use them. I use my knowledge about HTML to do tables and float images to the left or right in CSS. To do the floating of images I have to switch from regular WYSIWYG layout to HTML code layout. Then I manually add the style attribute to the image and make it float to the left. Could my mother do that? No chance. Could yours?? I doubt it.

For me as a web developer I have no problem switching between design and code view. But the average secretary has. She is used to Word and also know how to insert images and tables. She is an intermediate user of Word; in fact she is a little better. She also knows how to make hyperlinks and header formatting. When she sees the online rich text editors with their Microsoft Office style buttons and menus, she finds herself at home right away.

What she didn’t realize is that the online editor is nothing like Word. It looks like Word, but under the hood, a whole different ballgame is in play – HTML. She cannot place an image wherever she wants, text wrapping isn’t working and I could go on.

I’ve worked a couple of years developing content management systems, and the online editors were always a weak spot for the reasons I just mentioned. What the end customer wants is Word. Not an online editor, but Word. They know it very well and they feel at home.

Then I was thinking about the new Visual Studio Tools for Office (VSTO). Using these tools, it is possible to create a Word document with a direct link to a web service – it could be your blog engine or CMS system for that matter. Instead of using the online editors for editing blog posts, we could use Word. Think of the added benefit your customers would get when they can stay in their favourite text editor to create their HTML content? They probably write their content in Word before copying it to the online editor anyway.

It actually sounds too good to be true so why haven’t anybody done it already? Maybe they have and I just don’t know about it yet. Then why not make it my self? Well, I don’t think it is that easy to implement in an existing CMS/blogging application. If it is a CMS, you still need the online editors for people that haven’t got Office 2003 and .NET Framework 2.0 installed. On the other hand, I estimate it to be a fairly straight forward task, with little surprises for the experienced programmer. Of course, it also depends on the amount of functionally you want as well as the overall scope of the project.

The added benefits you gain from this have potential. After all, it let’s your customers use what they believe to by the one true text editor.